package com.lengxf.gc;

/**
 * 引用计数法
 * 运行钱查看gc日志 请增加对应的启动参数
 * 此方法的运行证明 jdk17不是使用的引用计数法
 *
 * @author Lengxf
 **/
public class ReferenceCountingGC {

    public Object instance = null;

    private static final int _1MB = 1024 * 1024;

    /**
     * 这个成员属性的唯一意义就是站点内存
     * 以便能在GC日志中看清楚是否有回收过
     **/
    private final byte[] bigSize = new byte[2 * _1MB];

    public static void testGC() {
        ReferenceCountingGC objA = new ReferenceCountingGC();
        ReferenceCountingGC objB = new ReferenceCountingGC();
        objA.instance = objB;
        objB.instance = objA;
        objA = null;
        objB = null;

        System.out.println("触发执行GC前....");
        //手动触发GC
        System.gc();

        System.out.println("触发执行GC后....");
    }


    public static void main(String[] args) {
        testGC();
    }


}
